package xmlGen;

import modele.Event;
import java.util.List;
import java.util.Iterator;

import modele.Contact;

import org.jdom.Element;

public class JDomModifier {

	private Element root;
	
	
	/**
	 * Initialisation de l'element racine 
	 * pour la mis a jour de la base de donnees
	 * 
	 * @param racine {@link Element} racine du fichier {@link XML}
	 */
	public JDomModifier(Element racine) {
		root = racine;
	}
	
	
	/**
	 * Initialise la racine a null
	 */
	public JDomModifier() {
		root = null;
	}


	/**
	 * Mets a jour le contact selon la valeur du booleen
	 * Si vrai, on supprime le contact, sinon le modifier
	 * 
	 * @param contact {@link Contact} qui doit etre mise a jour
	 * @param remove booleen qui determine le type de mise a jour
	 */
	@SuppressWarnings("unchecked")
	public void modifierContact(Contact contact, boolean remove) {
		
		List contacts = root.getChildren();
		Iterator it = ((java.util.List) contacts).iterator();
		boolean gotIt = false;
		Element courant = null;
		while(it.hasNext()) {
			courant = (Element)it.next();
			if(courant.getAttributeValue("id").equals(Integer.toString(contact.getId()))) {
				gotIt = true;
				break;
			}
		}
		if(gotIt) {
			root.removeContent(courant);
			if(!remove) {
				root.addContent(JDomElementCreater.createElement(contact));
			}
		}
	}
	
	 
	/**
	 * Mets a jour l'evenement selon la valeur du booleen
	 * Si vrai, on supprime l'evenement, sinon le modifier
	 * 
	 * @param event {@link Event} qui doit etre mise a jour
	 * @param remove booleen qui determine le type de mise a jour
	 */
	@SuppressWarnings("unchecked")
	public void modifierEvent(Event event, boolean remove) {
		
		List events = root.getChildren();
		Iterator it = ((java.util.List) events).iterator();
		boolean gotIt = false;
		Element courant = null;
		while(it.hasNext()) {
			courant = (Element)it.next();
			if(courant.getAttributeValue("idEvent").equals(Integer.toString(event.getId()))) {
				gotIt = true;
				break;
			}
		}
		if(gotIt) {
			root.removeContent(courant);
			if(!remove) {
				root.addContent(JDomElementCreater.createElement(event));
			}
		}
	}

	
	/**
	 * Mets a jour la racine pour les modifications
	 * 
	 * @param child {@link Element} racine a partir de laquelle on modifie
	 */
	public void setRoot(Element child) {
		root = child;
	}
}
